class TicketOrder {
    constructor() {
      // 用户信息
      this.userInfo = null;
      // 订单信息
      this.orderInfo = null;
    }
  
    /**
     * 2.1 火车票多条件查询函数 (switch循环结构)
     * @param {Object} queryParams - 查询参数
     * @param {string} queryParams.startStation - 出发站
     * @param {string} queryParams.endStation - 到达站
     * @param {string} queryParams.date - 出发日期
     * @param {string} queryParams.queryType - 查询类型：最快/最便宜/最早/最晚
     * @returns {Array} - 查询结果列表
     */
    queryTickets(queryParams) {
      const { startStation, endStation, date, queryType } = queryParams;
      
      // 模拟从数据库获取的火车票数据
      const tickets = [
        { id: 1, trainNumber: 'G101', startStation: '北京', endStation: '上海', departureTime: '08:00', arrivalTime: '13:00', price: 553, duration: 300 },
        { id: 2, trainNumber: 'G102', startStation: '北京', endStation: '上海', departureTime: '09:30', arrivalTime: '14:30', price: 553, duration: 300 },
        { id: 3, trainNumber: 'D31', startStation: '北京', endStation: '上海', departureTime: '10:00', arrivalTime: '18:30', price: 309, duration: 510 },
        { id: 4, trainNumber: 'K111', startStation: '北京', endStation: '上海', departureTime: '18:00', arrivalTime: '08:00', price: 188, duration: 840 },
      ];
      
      // 过滤出符合起始站和到达站的车票
      let filteredTickets = tickets.filter(ticket => 
        ticket.startStation === startStation && 
        ticket.endStation === endStation
      );
      
      // 按照查询类型排序
      switch (queryType) {
        case 'fastest':
          // 按耗时最短排序
          filteredTickets.sort((a, b) => a.duration - b.duration);
          console.log("按最快排序");
          break;
        case 'cheapest':
          // 按价格最低排序
          filteredTickets.sort((a, b) => a.price - b.price);
          console.log("按最便宜排序");
          break;
        case 'earliest':
          // 按最早出发排序
          filteredTickets.sort((a, b) => a.departureTime.localeCompare(b.departureTime));
          console.log("按最早出发排序");
          break;
        case 'latest':
          // 按最晚出发排序
          filteredTickets.sort((a, b) => b.departureTime.localeCompare(a.departureTime));
          console.log("按最晚出发排序");
          break;
        default:
          // 默认按出发时间排序
          filteredTickets.sort((a, b) => a.departureTime.localeCompare(b.departureTime));
          console.log("默认排序");
      }
      
      return filteredTickets;
    }
  
    /**
     * 2.2 计算车票价格的函数 (if-else判断结构)
     * @param {number} basePrice - 基础票价
     * @param {Object} identity - 乘客身份信息
     * @param {string} identity.type - 身份类型：普通/学生/残疾人/儿童/老人
     * @param {number} identity.height - 儿童身高(厘米)，仅儿童身份时需要
     * @returns {number} - 最终票价
     */
    calculateTicketPrice(basePrice, identity) {
      // 初始化最终价格为基础票价
      let finalPrice = basePrice;
      
      // 根据身份类型计算折扣
      if (identity.type === '学生' || identity.type === '残疾人') {
        // 学生和残疾人半价
        finalPrice = basePrice * 0.5;
        console.log(`${identity.type}享受半价优惠`);
      } else if (identity.type === '儿童') {
        // 儿童身高判断
        if (identity.height < 120) {
          // 1.2米以下儿童免票
          finalPrice = 0;
          console.log("儿童身高低于120cm，免票");
        } else {
          // 1.2米及以上儿童半价
          finalPrice = basePrice * 0.5;
          console.log("儿童身高120cm及以上，半价");
        }
      } else if (identity.type === '老人') {
        // 老人优惠7折
        finalPrice = basePrice * 0.7;
        console.log("老人享受7折优惠");
      } else {
        // 普通乘客全价
        console.log("普通乘客，全价票");
      }
      
      return finalPrice;
    }
  
    /**
     * 2.3 登录函数 (顺序结构)
     * @param {string} username - 用户名
     * @param {string} password - 密码
     * @returns {Object} - 登录结果
     */
    login(username, password) {
      // 模拟数据库中的用户数据
      const users = [
        { id: 1, username: 'user1', password: 'password1', name: '张三' },
        { id: 2, username: 'user2', password: 'password2', name: '李四' },
        { id: 3, username: 'admin', password: 'admin123', name: '管理员' }
      ];
      
      // 步骤1: 验证输入是否为空
      if (!username || !password) {
        return { success: false, message: '用户名和密码不能为空' };
      }
      
      // 步骤2: 在用户数据中查找匹配的用户
      const user = users.find(u => u.username === username);
      
      // 步骤3: 检查用户是否存在
      if (!user) {
        return { success: false, message: '用户不存在' };
      }
      
      // 步骤4: 验证密码是否正确
      if (user.password !== password) {
        return { success: false, message: '密码错误' };
      }
      
      // 步骤5: 登录成功，保存用户信息
      this.userInfo = {
        id: user.id,
        username: user.username,
        name: user.name
      };
      
      // 步骤6: 返回登录成功信息
      return { 
        success: true, 
        message: '登录成功', 
        user: this.userInfo 
      };
    }
    
    /**
     * 创建订单
     * @param {Object} ticketInfo - 车票信息
     * @param {Object} passengerInfo - 乘客信息
     * @returns {Object} - 创建的订单
     */
    createOrder(ticketInfo, passengerInfo) {
      // 检查用户是否已登录
      if (!this.userInfo) {
        return { success: false, message: '请先登录' };
      }
      
      // 计算票价
      const finalPrice = this.calculateTicketPrice(
        ticketInfo.price, 
        { type: passengerInfo.identityType, height: passengerInfo.height }
      );
      
      // 创建订单
      this.orderInfo = {
        orderId: Date.now().toString(),
        userId: this.userInfo.id,
        ticketId: ticketInfo.id,
        trainNumber: ticketInfo.trainNumber,
        startStation: ticketInfo.startStation,
        endStation: ticketInfo.endStation,
        departureTime: ticketInfo.departureTime,
        passengerName: passengerInfo.name,
        identityType: passengerInfo.identityType,
        price: finalPrice,
        status: '待支付',
        createTime: new Date().toISOString()
      };
      
      // 返回订单信息
      return { 
        success: true, 
        message: '订单创建成功', 
        order: this.orderInfo 
      };
    }
    
    /**
     * 获取当前订单信息
     * @returns {Object} - 当前订单信息
     */
    getCurrentOrder() {
      return this.orderInfo;
    }
  }